package com.smallA.association.utils;

import org.springframework.stereotype.Component;

import java.util.regex.Pattern;

/**
 * 数据校验用工具类
 */
@Component
public class DataUtils {

    private static final int PHONE_LEN = 11;

    /**
     * 校验数组用
     * 校验数组是否合法, 合法返回true, 非法返回false
     *
     * @param data 要校验的数据
     * @return 合法返回true, 非法返回false
     */
    public static boolean examineNumber(Integer... data) {
        if (data == null) {
            return false;
        }
        for (Integer datum : data) {
            if (datum == null || datum <= 0) {
                return false;
            }
        }
        return true;
    }

    /**
     * 校验数组用
     * 校验数组是否合法, 合法返回true, 非法返回false
     *
     * @param data 要校验的数据
     * @return 合法返回true, 非法返回false
     */
    public static boolean examineNumArray(Integer[] data) {
        if (data == null || data.length == 0) {
            return false;
        }
        for (Integer datum : data) {
            if (datum == null || datum <= 0) {
                return false;
            }
        }
        return true;
    }

    /**
     * 校验浮点数组是否合法, 合法返回true, 非法返回false
     *
     * @param data 要校验的数据
     * @return 合法返回true, 非法返回false
     */
    public static boolean examineFloatArray(Float[] data) {
        if (data == null || data.length == 0) {
            return false;
        }
        for (Float datum : data) {
            if (datum == null || datum <= 0) {
                return false;
            }
        }
        return true;
    }

    /**
     * 校验下字符串数据是否合法
     *
     * @param str 校验的字符串
     * @param num 要校验的字符串字节长度
     * @return 返回是否合法, 合法返回true, 非法返回false
     */
    public static boolean examineStr(String str, int num) {
        return !(str == null || "".equals(str) || str.getBytes().length > num);
    }

    /**
     * 基本校验多个字符串
     * @param strs
     * @return
     */
    public static boolean examineStrs(String... strs){
        if (strs == null){
            return false;
        }
        for(String str : strs){
            if(!examineStr(str)){
                return false;
            }
        }
        return true;
    }

    /**
     * 校验下字符串数据是否合法
     *
     * @param str 校验的字符串
     * @return 返回是否合法, 合法返回true, 非法返回false
     */
    public static boolean examineStr(String str) {
        return str != null && !"".equals(str);
    }

    /**
     * 校验下手机号是否正确
     *
     * @param phone 输入对应的手机号
     * @return 正确返回true, 失败返回false;
     */
    public static boolean examinePhone(String phone) {
        String regex = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$";
        if (phone.length() != PHONE_LEN) {
            return false;
        } else {
            return Pattern.compile(regex).matcher(phone).matches();
        }
    }
}
